package Tasks;

import java.util.LinkedList;
import java.util.List;

import ru.ys.jsolver.interfaces.ITask;

public class Crossword13 implements ITask{
	private Integer[] row00 = {3,5};	
	private Integer[] row01 = {5,6}; 
	private Integer[] row02 = {3,5,3,7}; 
	private Integer[] row03 = {5,3,5,3,3}; 
	private Integer[] row04 = {15,3,2};
	
	private Integer[] row05 = {2,2,2,2}; 
	private Integer[] row06 = {21,1,1}; 
	private Integer[] row07 = {2,4,1,14,1}; 
	private Integer[] row08 = {4,3,1,5,3,4,1}; 
	private Integer[] row09 = {3,2,3,4,2,3,1};
	
	private Integer[] row10 = {4,2,2,3,4,2,3,1}; 
	private Integer[] row11 = {5,2,2,3,2,5,3,3,1}; 
	private Integer[] row12 = {1,3,1,8,4,3,3,1}; 
	private Integer[] row13 = {4,3,5,4,3,3,1}; 
	private Integer[] row14 = {3,8,4,3,3,2};
	
	private Integer[] row15 = {16,8,3,1}; 
	private Integer[] row16 = {19,5,3,1}; 
	private Integer[] row17 = {19,8,2}; 
	private Integer[] row18 = {18,9,1}; 
	private Integer[] row19 = {16,8,1};
	
	private Integer[] row20 = {11,3,8}; 
	private Integer[] row21 = {9,2,7}; 
	private Integer[] row22 = {5,8}; 
	private Integer[] row23 = {3,8}; 
	private Integer[] row24 = {3,8};
	
	private Integer[] row25 = {3,9}; 
	private Integer[] row26 = {3,13,3}; 
	private Integer[] row27 = {5,7,5}; 
	private Integer[] row28 = {6,6}; 
	private Integer[] row29 = {13}; 
		
		
		
	private Integer[] col00 = {1,2};
	private Integer[] col01 = {5};
	private Integer[] col02 = {7};
	private Integer[] col03 = {11};
	private Integer[] col04 = {11};
	
	private Integer[] col05 = {9};
	private Integer[] col06 = {5,8};
	private Integer[] col07 = {5,1,8,1};
	private Integer[] col08 = {3,1,8,2};
	private Integer[] col09 = {3,2,1,9,3};
	
	private Integer[] col10 = {3,3,11,3};
	private Integer[] col11 = {2,1,1,8,3,2};
	private Integer[] col12 = {3,1,13,3,2};
	private Integer[] col13 = {3,16,2,2};
	private Integer[] col14 = {3,1,12,1,2};
	
	private Integer[] col15 = {2,1,8,1,2,1};
	private Integer[] col16 = {2,1,2,11,2,1};
	private Integer[] col17 = {5,3,2,7,3,1};
	private Integer[] col18 = {5,4,6,3,1};
	private Integer[] col19 = {5,6,4,4,1};
	
	private Integer[] col20 = {2,1,13,5,1};
	private Integer[] col21 = {2,12,6,1};
	private Integer[] col22 = {3,2,6,9,2};
	private Integer[] col23 = {3,3,16,2};
	private Integer[] col24 = {3,4,12,2};
	
	private Integer[] col25 = {2,20,2};
	private Integer[] col26 = {3,15,3};
	private Integer[] col27 = {4,13,3};
	private Integer[] col28 = {3,4,6,2};
	private Integer[] col29 = {6,14,1};
	
	private Integer[] col30 = {7,11};
	private Integer[] col31 = {3,7,1};
	private Integer[] col32 = {4,2};
	private Integer[] col33 = {6,4};
	private Integer[] col34 = {14};
	
	
	private List<Integer> generateList(Integer[] mas) {
		List<Integer> result = new LinkedList<Integer>();
		for (int i = 0; i < mas.length; i++) {
			result.add(mas[i]);
		}
		return result;
	}
	
	@Override
	public List<Integer> getCollumn(int i) {
		switch(i) {
		case 0: return generateList(col00);
		case 1: return generateList(col01);
		case 2: return generateList(col02);
		case 3: return generateList(col03);
		case 4: return generateList(col04);		
		case 5: return generateList(col05);		
		case 6: return generateList(col06);
		case 7: return generateList(col07);
		case 8: return generateList(col08);
		case 9: return generateList(col09);
		
		case 10: return generateList(col10);
		case 11: return generateList(col11);
		case 12: return generateList(col12);
		case 13: return generateList(col13);
		case 14: return generateList(col14);		
		case 15: return generateList(col15);		
		case 16: return generateList(col16);
		case 17: return generateList(col17);
		case 18: return generateList(col18);
		case 19: return generateList(col19);
		

		case 20: return generateList(col20);
		case 21: return generateList(col21);
		case 22: return generateList(col22);
		case 23: return generateList(col23);
		case 24: return generateList(col24);		
		case 25: return generateList(col25);		
		case 26: return generateList(col26);
		case 27: return generateList(col27);
		case 28: return generateList(col28);
		case 29: return generateList(col29);
		
		case 30: return generateList(col30);
		case 31: return generateList(col31);
		case 32: return generateList(col32);
		case 33: return generateList(col33);
		case 34: return generateList(col34);		
		}
		return null;
	}

	@Override
	public int getHeight() {		
		return 30;
	}

	@Override
	public List<Integer> getRow(int i) {		
		switch(i) {
		case 00: return generateList(row00);
		case 01: return generateList(row01);
		case 02: return generateList(row02);
		case 03: return generateList(row03);
		case 04: return generateList(row04);
		case 05: return generateList(row05);
		case 06: return generateList(row06);
		case 07: return generateList(row07);
		case 8: return generateList(row08);
		case 9: return generateList(row09);
		
		case 10: return generateList(row10);
		case 11: return generateList(row11);
		case 12: return generateList(row12);
		case 13: return generateList(row13);
		case 14: return generateList(row14);
		case 15: return generateList(row15);
		case 16: return generateList(row16);
		case 17: return generateList(row17);
		case 18: return generateList(row18);
		case 19: return generateList(row19);
		
		case 20: return generateList(row20);
		case 21: return generateList(row21);
		case 22: return generateList(row22);
		case 23: return generateList(row23);
		case 24: return generateList(row24);
		case 25: return generateList(row25);
		case 26: return generateList(row26);
		case 27: return generateList(row27);
		case 28: return generateList(row28);
		case 29: return generateList(row29);
			
		
		}
		return null;
	}

	@Override
	public int getWidth() {
		return 35;
	}

}
